A typical computer system includes hardware (e.g., processor (s), memory, etc.) and software (e.g., operating system, user-level applications, etc.). With regards to hardware, processor architecture has expanded from a chip with a single processor to a chip with multiple processors. Each of the multiple processors may have multiple cores. Each of the multiple cores may have multiple strands that are each configured to execute a thread.
From the software perspective, the software is often executed as one or more threads. Specifically, a thread corresponds to a sequence of instructions in execution. When a thread of an application is executed, an instruction in the thread may request the operating system of the computer system to create a new thread. In response, the operating system allocates resources and schedules the new thread to execute on the hardware.